#include "encoder.h"


/**
 * @brief   获取TLE5012角度
 *
 * @param   pTLE5012B		PTLE5012B_Struct结构体指针
 *
 * @return  none
 */
float ReadTLE5012BAngle(PTLE5012B_Struct pTLE5012B)
{
	uint16_t data = 0xffff;
	float angle;
	
	// 1. 片选选中
	pTLE5012B->SetCSLeave(0);
	// 2. 延时1us
	pTLE5012B->Delay_us(1);
	// 3. 发送获取角度的命令
	pTLE5012B->SPIWrite(0x8021);
	// 4. 获取原始数据
	data = pTLE5012B->SPIRead();
	// 5. 取消片选
	pTLE5012B->SetCSLeave(1);
	// 6. 数据处理
	data &= 0x7fff;
	angle = data / 32767.0f * 360.0f;
	
//	printf("pre:%f\r\n",angle);
	
	angle = angle - pTLE5012B->angleOffect;
	if (angle < 0)
	{
		angle = angle + 360.0f;
	}
	
    return  angle;
}

/**
 * @brief   获取AS5600角度
 *
 * @param   pAS5600		PAS5600_Struct结构体指针
 *
 * @return  none
 */
float ReadAS5600Angle(PAS5600_Struct pAS5600)
{
	float angle;
	uint16_t data;
	
	// 1. 发送获取角度的命令
	pAS5600->IICWrite(0x0C);
	// 2. 接收角度数据
	data = pAS5600->IICRead();
	// 3. 数据处理
	angle = data / 4095.0f * 360.0f;
	
//	printf("pre:%f\r\n",angle);
	
	angle = angle - pAS5600->angleOffect;
	if (angle < 0)
	{
		angle = angle + 360.0f;
	}
	
    return  angle;
}


